From 329dc26a70da5f993e2c526dd0e3c83e16f5cdb7 Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Mon, 30 Apr 2001 14:37:47 +0000 Subject: [PATCH] (x_window_to_menu_bar) [USE_LUCID]: New function. (XTread_socket) [USE_LUCID] : Handle events for windows that are components of a Lucid menu bar. --- src/xterm.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/xterm.c b/src/xterm.c index 15ba1e9c6dc..118c1261ee9 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -8037,6 +8037,33 @@ x_window_to_scroll_bar (window_id) } +#if defined USE_X_TOOLKIT && defined USE_LUCID + +/* Return the Lucid menu bar WINDOW is part of. Return null + if WINDOW is not part of a menu bar. */ + +static Widget +x_window_to_menu_bar (window) + Window window; +{ + Lisp_Object tail; + + for (tail = Vframe_list; + XGCTYPE (tail) == Lisp_Cons; + tail = XCDR (tail)) + { + Lisp_Object frame = XCAR (tail); + Widget menu_bar = XFRAME (frame)->output_data.x->menubar_widget; + + if (menu_bar && xlwmenu_window_p (menu_bar, window)) + return menu_bar; + } + + return NULL; +} + +#endif /* USE_X_TOOLKIT && USE_LUCID */ + /************************************************************************ Toolkit scroll bars @@ -9990,6 +10017,18 @@ XTread_socket (sd, bufp, numchars, expected) } else { +#if defined USE_X_TOOLKIT && defined USE_LUCID + /* Submenus of the Lucid menu bar aren't widgets + themselves, so there's no way to dispatch events + to them. Recognize this case separately. */ + { + Widget widget + = x_window_to_menu_bar (event.xexpose.window); + if (widget) + xlwmenu_redisplay (widget); + } +#endif /* USE_X_TOOLKIT && USE_LUCID */ + #ifdef USE_TOOLKIT_SCROLL_BARS /* Dispatch event to the widget. */ goto OTHER; -- 2.30.2